//package com.core.website.configuration;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.http.HttpHost;
//import org.apache.http.auth.AuthScope;
//import org.apache.http.auth.UsernamePasswordCredentials;
//import org.apache.http.client.CredentialsProvider;
//import org.apache.http.client.config.RequestConfig;
//import org.apache.http.impl.client.BasicCredentialsProvider;
//import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
//import org.elasticsearch.client.RestClient;
//import org.elasticsearch.client.RestClientBuilder;
//import org.elasticsearch.client.RestHighLevelClient;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//@Configuration
//public class ElasticsearchConfiguration {
//
//    @Value("${es.host}")
//    private String host;
//    @Value("${es.port}")
//    private int port;
//    @Value("${es.userName}")
//    private String userName;
//    @Value("${es.password}")
//    private String password;
//    @Value("${es.protocol:http}")
//    private String protocol;
//
//    @Bean
//    public RestHighLevelClient esClient() {
//        String[] hosts = host.split(",");
//
//        HttpHost[] httpHosts = new HttpHost[hosts.length];
//        for (int i = 0; i < hosts.length; i++) {
//            httpHosts[i] = new HttpHost(hosts[i], port, protocol);
//        }
//        if (StringUtils.isNotEmpty(userName) && StringUtils.isNotEmpty(password)) {
//            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
//            return new RestHighLevelClient(RestClient.builder(httpHosts).setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder) -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider)));
//
//        } else {
//            RestHighLevelClient highLevelClient = new RestHighLevelClient(
//                    RestClient.builder(httpHosts)
//                            .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
//                                // 该方法接收一个RequestConfig.Builder对象，对该对象进行修改后然后返回。
//                                @Override
//                                public RequestConfig.Builder customizeRequestConfig(
//                                        RequestConfig.Builder requestConfigBuilder) {
//                                    return requestConfigBuilder.setConnectTimeout(5000 * 1000) // 连接超时（默认为1秒）
//                                            .setSocketTimeout(6000 * 1000);// 套接字超时（默认为30秒）//更改客户端的超时限制默认30秒现在改为100*1000分钟
//                                }
//                            }));// 调整最大重试超时时间（默认为30秒）.setMaxRetryTimeoutMillis(60000);
//
//            return highLevelClient;
//        }
//    }
//
//}
